#include <iostream>

using std::cout;
using std::endl;

int func()
{
    return 10;
}

int func2()
{
    return 20;
}

int func3(int x)
{
    return x;
}

void test()
{
    typedef int(*pFunc)();
    //延迟调用的思想
    //C++中的多态就是使用了延迟调用的思想
    pFunc f = &func;//回调函数注册
    //...
    //...
    cout << "f() = " << f() << endl;//回调函数的执行

    f = &func2;
    cout << "f() = " << f() << endl;

    /* f = &func3;//error */
}

int main(int argc, char *argv[])
{
    test();
    return 0;
}


